package cn.wx.properties;

import cn.wx.api.WxPayMultipleService;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.util.Assert;

import java.util.List;

import static cn.wx.properties.WxPayProperties.PREFIX;

/**
 * <pre>
 *  微信支付属性配置类
 * Created by Binary Wang on 2019/4/17.
 * </pre>
 *
 * @author <a href="https://github.com/binarywang">Binary Wang</a>
 */
@Data
@ConfigurationProperties(prefix = PREFIX)
public class WxPayProperties {

    public static final String PREFIX = "wx.pay";

    /**
     * 设置微信公众号或者小程序等的appid.
     */
    private String appId;

    /**
     * 微信支付商户号.
     */
    private String mchId;

    /**
     * 微信支付商户密钥.
     */
    private String mchKey;

    /**
     * 服务商模式下的子商户公众账号ID，普通模式请不要配置，请在配置文件中将对应项删除.
     */
    private String subAppId;

    /**
     * 服务商模式下的子商户号，普通模式请不要配置，最好是请在配置文件中将对应项删除.
     */
    private String subMchId;

    /**
     * apiclient_cert.p12文件的绝对路径，或者如果放在项目中，请以classpath:开头指定.
     */
    private String keyPath;

    /**
     * spring bean name 不可重复,
     * 同时也是{@link WxPayMultipleService#switchoverTo(java.lang.String)} 的入参
     */
    private String name;

    /**
     * 多个公众号配置
     */
    private List<WxPayProperties> multiple;


    /**
     * 验证配置是否正确
     */
    public void verification(String prefix) {
        Assert.hasText(appId, prefix + ".app-id,必输");
        Assert.hasText(name, prefix + ".name,必输");
    }
}
